home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 8.0 KB | 350 lines |
- 10 CLS:KEY OFF
- 20 REM AUTHOR: ROBERT W. BAKER
- 30 REM MODIFIED FOR BASIC-E (BARF) BY R S MASON 9-25-77
- 40 REM MODIFIED FOR MICROSOFT DISK BASIC BY ZOSO
- 50 REM THIS PROGRAM REQUIRES CP/M WITH 26K OF FREE MEMORY (OVERHEAD)
- 60 REM
- 70 REM THIS GAME IS WRITTEN TO PROVIDE A REALISTIC MODEL OF THE
- 80 REM ACTUAL STOCK MARKET RATHER THAN A COMPLETELY RANDOMIZED
- 90 REM HAPPENING OF EVENTS.
- 100 REM
- 110 REM
- 111 PRINT TAB(30)"BLACK FRIDAY #3"
- 120 PRINT CHR$(26) : WIDTH 80
- 130 PRINT "WHAT IS YOUR LUCKY NUMBER (1 TO 25000)"
- 140 INPUT A
- 150 IF A<1 OR A>25000 OR A<>INT(A) THEN PRINT "DO IT RIGHT !" : GOTO 130
- 160 PRINT CHR$(26)
- 170 PRINT "STAND BY FOR A FEW MOMENTS"
- 180 A=A MOD 97
- 190 FOR X=1 TO A : X1=RND(1) : X1=RND(X) : NEXT X
- 200 DIM A(36,12),U(11,9),E(11,9),K(10),T(10),F(9),M(4,12),X(4)
- 210 FOR I=1 TO 36: FOR J=1 TO 12: READ A(I,J): NEXT J: NEXT I
- 220 FOR I=1 TO 11: FOR J=1 TO 9: READ U(I,J): NEXT J: NEXT I
- 230 FOR I=1 TO 11: FOR J=1 TO 9: READ E(I,J): NEXT J: NEXT I
- 240 FOR N=1 TO 10
- 250 READ K(N)
- 260 NEXT N
- 270 V$="HIB XP SP ODMRD SO BT KA ZE BPL"
- 280 Y$="$5 $1 NONE$4 $7 NONENONE$2 $6 $3 "
- 290 REM
- 300 REM DATA TO SIMULATE REAL LIFE STOCK MARKET
- 310 REM
- 320 DATA 1,0,0,0,0,0,0,0,0,5,0,0
- 330 DATA 0,0,0,0,0,0,-25,0,0,0,0,0
- 340 DATA 1,0,0,0,0,0,0,15,0,0,0,0
- 350 DATA 0,0,0,0,-5,0,0,0,0,0,0,0
- 360 DATA 1,0,0,0,0,0,0,0,0,5,0,0
- 370 DATA 0,0,0,0,0,0,5,0,0,0,0,0
- 380 DATA 1,0,0,0,0,0,10,0,0,0,0,0
- 390 DATA 0,0,10,0,0,0,0,0,0,0,0,0
- 400 DATA 1,0,0,0,0,0,15,0,0,0,0,0
- 410 DATA 0,0,-5,0,0,0,0,0,0,0,0,0
- 420 DATA 1,8,5,5,0,0,0,7,0,0,0,0
- 430 DATA 0,0,0,0,0,0,0,0,-25,0,0,0
- 440 DATA 1,0,0,0,0,0,0,0,10,0,0,0
- 450 DATA 0,0,-10,0,0,0,0,0,0,0,0,0
- 460 DATA 1,0,5,0,0,0,0,0,0,0,0,0
- 470 DATA 0,10,0,0,0,0,0,0,0,0,1,0
- 480 DATA 1,0,0,0,0,17,0,0,0,0,0,0
- 490 DATA 0,0,0,0,0,-15,0,0,0,0,0,0
- 500 DATA 1,0,0,0,0,0,0,0,10,0,0,0
- 510 DATA 0,0,0,0,0,0,0,-15,0,0,0,0
- 520 DATA 1,0,0,0,0,0,0,10,0,0,0,0
- 530 DATA 0,0,0,0,0,0,0,-15,0,0,0,0
- 540 DATA 1,0,0,-8,0,8,0,0,5,0,0,0
- 550 DATA 0,-10,0,0,0,0,0,0,0,0,0,0
- 560 DATA 1,8,0,0,0,0,0,0,0,0,0,0
- 570 DATA 0,0,0,0,0,0,0,-10,0,0,0,0
- 580 DATA 1,0,0,3,0,0,0,0,0,4,0,0
- 590 DATA 0,-8,0,0,0,0,0,0,0,0,0,0
- 600 DATA 1,0,0,0,5,0,0,0,0,0,0,0
- 610 DATA 0,0,0,0,0,-10,0,0,0,0,0,0
- 620 DATA 1,0,0,0,0,0,0,10,0,0,0,0
- 630 DATA 0,-8,-5,0,0,0,0,-7,0,0,0,0
- 640 DATA 1,10,0,0,0,0,0,0,0,0,0,0
- 650 DATA 0,0,0,0,0,0,0,0,0,-14,0,0
- 660 DATA 1,-10,0,0,0,0,0,0,0,0,0,0
- 670 DATA 0,0,0,0,0,0,-5,0,0,0,0,0
- 680 DATA -2,-10,7,-9,-2,-9,-7,-16,-4
- 690 DATA 26,16,25,8,-14,21,14,-4,17
- 700 DATA 18,23,11,12,46,18,-5,34,15
- 710 DATA 23,28,-2,11,56,19,30,29,14
- 720 DATA 20,15,15,7,-20,15,13,-10,12
- 730 DATA 17,21,13,-2,37,23,23,19,14
- 740 DATA 19,24,17,9,-5,26,13,-7,15
- 750 DATA 11,18,14,11,67,15,22,18,13
- 760 DATA 13,31,1,14,-11,18,18,-14,10
- 770 DATA 14,-8,19,1,-9,25,-10,13,19
- 780 DATA 24,24,23,20,51,27,38,33,18
- 790 DATA 12,14,13,10,10,20,21,25,8
- 800 DATA 7,-6,10,-10,30,6,-19,22,-2
- 810 DATA 9,10,7,-5,-20,12,21,18,7
- 820 DATA 7,8,5,-6,-40,3,16,-14,4
- 830 DATA 8,6,4,-4,40,8,4,-12,3
- 840 DATA 6,4,3,3,-15,5,8,-8,5
- 850 DATA 5,7,-1,-3,45,6,-10,10,4
- 860 DATA -2,6,-3,-8,-20,7,10,14,6
- 870 DATA 11,11,-5,-7,30,10,-11,-18,-4
- 880 DATA -5,13,-8,6,25,4,18,-22,-4
- 890 DATA -8,-10,-10,-15,-20,-20,-23,-25,-7
- 900 DATA 5,1,0,4,7,0,0,2,6,3
- 910 REM
- 920 REM SECURITY NAMES
- 930 REM
- 940 A$="HIGHWAY IMPROVEMENT BONDS"
- 950 B$="X-PANDO CORPORATION"
- 960 C$="SEASIDE PROPERTIES INC."
- 970 D$="OLD DOG MUTUAL FUND"
- 980 E$="RUBBLE DEVELOPMENT"
- 990 F$="SLIPPERY OIL COMPANY"
- 1000 G$="BUMPY TRANSPORT CO."
- 1010 H$="KRASH AUTO COMPANY"
- 1020 I$="ZAP ELECTRONICS "
- 1030 J$="BLINKEY POWER & LIGHT CO."
- 1040 REM
- 1050 REM
- 1060 PRINT "WANT INSTRUCTIONS";
- 1070 INPUT R$
- 1080 IF LEFT$(R$,1)="N" THEN 1320
- 1090 IF LEFT$(R$,1)<>"Y" THEN 1070
- 1100 PRINT CHR$(26)
- 1110 PRINT "THE MAIN OBJECT OF BLACK FRIDAY IS TO SHREWDLY INVEST $5000"
- 1120 PRINT"IN THE GAME'S 10 SECURITIES, BUYING AND SELLING EACH YEAR FOR"
- 1130 PRINT"A MAXIMUM OF 10 YEARS (ROUNDS) IN AN ATTEMPT TO BECOME"
- 1140 PRINT"THE WEALTHIEST PLAYER."
- 1150 PRINT
- 1160 PRINT"EACH YEAR ALL PLAYERS WILL RECEIVE DIVIDENDS ON EVERY PAYING"
- 1170 PRINT"STOCK WHICH IS WORTH $50 OR MORE."
- 1180 PRINT
- 1190 PRINT"IF THE VALUE OF ANY STOCK FALLS TO 0,THAT STOCK GOES BANKRUPT"
- 1200 PRINT"AND ALL SHARES ARE SURRENDERED.THE VALUE OF THE STOCK IS THEN"
- 1210 PRINT"ESTABLISHED AT $100. IF THE VALUE OF ANY STOCK REACHES $150,"
- 1220 PRINT"THERE WILL BE A STOCK SPLIT."
- 1230 PRINT
- 1240 PRINT"A TABLE WILL BE PRINTED EACH YEAR GIVING THE CHANGE IN VALUE"
- 1250 PRINT"OF EACH STOCK, THE PRESENT PRICE, AND THE NUMBER OF SHARES"
- 1260 PRINT"EACH PLAYER OWNS OF EVERY STOCK. ALSO, ANY DIVIDENDS RECEIVED"
- 1270 PRINT"FOR THE YEAR WILL BE SHOWN ALONG WITH EACH PLAYERS TOTAL CASH"
- 1280 PRINT
- 1290 PRINT "PRESS SPACE BAR TO PLAY"
- 1300 WAIT 0,1,1
- 1310 PRINT CHR$(26)
- 1320 PRINT CHR$(26)
- 1330 PRINT"AVAILABLE SECURITIES, ABBREVIATION, DIVIDENDS PER SHARE"
- 1340 PRINT
- 1350 FOR N=1 TO 10
- 1360 GOSUB 3190
- 1370 PRINT S$,MID$(V$,3*N-2,3),MID$(Y$,4*N-3,4)
- 1380 NEXT N
- 1390 PRINT
- 1400 INPUT "NUMBER OF PLAYERS (1 TO 4)="; P
- 1410 IF P>4 THEN 1450
- 1420 IF P<=0 THEN 1450
- 1430 FOR I=1 TO 4: FOR J=1 TO 12: M(I,J)=0: NEXT J: NEXT I
- 1440 INPUT "NUMBER OF YEARS (3 TO 10)="; S
- 1450 IF S<3 THEN 1510
- 1460 IF S>10 THEN 1510
- 1470 PRINT CHR$(26)
- 1480 FOR I=1 TO 9: F(I)=0: NEXT I
- 1490 FOR N=1 TO P
- 1500 M(N,1)=5000
- 1510 NEXT N
- 1520 FOR I=1 TO 10: T(I)=100: NEXT I
- 1530 Y=0
- 1540 REM
- 1550 REM
- 1560 REM FIND MARKET CHANGES FOR NEXT ROUND,SEE IF BULL OR BEAR MARKET
- 1570 REM
- 1580 D=INT(RND(1)*11+1)
- 1590 C=INT(RND(1)*36+1)
- 1600 IF A(C,12)=1 THEN 1590
- 1610 A(C,12)=1
- 1620 FOR N=2 TO 10
- 1630 GOSUB 3190
- 1640 IF A(C,1)=1 THEN 1690
- 1650 W$="BEAR"
- 1660 F(N-1)=A(C,N)+E(D,N-1)
- 1670 T(N)=T(N)+F(N-1)
- 1680 GOTO 1750
- 1690 F(N-1)=A(C,N)+U(D,N-1)
- 1700 W$="BULL"
- 1710 T(N)=T(N)+F(N-1)
- 1720 REM
- 1730 REM CHECK FOR STOCK SPLITS
- 1740 REM
- 1750 IF T(N)<150 THEN 1870
- 1760 PRINT "*** "+S$+" STOCKS SPLIT ***"
- 1770 IF T(N)/2=INT(T(N)/2) THEN 1800
- 1780 T(N)=INT(T(N)/2)+1
- 1790 GOTO 1810
- 1800 T(N)=T(N)/2
- 1810 FOR J=1 TO P
- 1820 M(J,N+1)=M(J,N+1)*2
- 1830 NEXT J
- 1840 REM
- 1850 REM CHECK FOR BANKRUPT STOCKS
- 1860 REM
- 1870 IF T(N)>0 THEN 1940
- 1880 T(N)=100
- 1890 FOR J=1 TO P
- 1900 M(J,N+1)=0
- 1910 NEXT J
- 1920 PRINT "*** "+S$+" WENT BANKRUPT ***"
- 1930 PRINT "THESE STOCKS MUST BE SURRENDERED"
- 1940 NEXT N
- 1950 Y=Y+1
- 1960 REM
- 1970 REM ADD EACH PLAYERS DIVIDENDS TO TOTAL CASH
- 1980 REM
- 1990 FOR N=1 TO P
- 2000 M(N,12)=0
- 2010 FOR J=1 TO 10
- 2020 IF T(J)<50 THEN 2040
- 2030 M(N,12)=M(N,12)+K(J)*M(N,J+1)
- 2040 NEXT J
- 2050 IF A(C,11)=0 THEN 2080
- 2060 M(N,12)=M(N,12)+M(N,3)*2
- 2070 PRINT "*** X-PANDO CORP. PAYS $2 DIVIDENDS PER SHARE ***"
- 2080 M(N,1)=M(N,1)+M(N,12)
- 2090 NEXT N
- 2100 REM
- 2110 REM
- 2120 REM PRINT WHAT HAPPENED & CURRENT VALUES
- 2130 REM
- 2140 PRINT CHR$(26) : PRINT "*** YEAR ";Y;"*** "+W$+" MARKET ***"
- 2150 PRINT TAB(23);"PLAYER HOLDINGS YEAR ";Y
- 2160 PRINT TAB(6);" +/-$ PRICE";
- 2170 FOR N=1 TO P
- 2180 PRINT TAB(18+8*N);N;
- 2190 NEXT N
- 2200 PRINT
- 2210 PRINT LEFT$(V$,3);TAB(8);"0";TAB(16);"100";
- 2220 FOR N=1 TO P
- 2230 PRINT TAB(18+8*N);M(N,2);
- 2240 NEXT N
- 2250 PRINT
- 2260 FOR N=1 TO 9
- 2270 PRINT MID$(V$,3*N+1,3);TAB(7);F(N);TAB(15);T(N+1);
- 2280 FOR J=1 TO P
- 2290 PRINT TAB(18+8*J);M(J,N+2);
- 2300 NEXT J
- 2310 PRINT
- 2320 NEXT N
- 2330 PRINT
- 2340 PRINT "DIVIDENDS FOR YEAR";
- 2350 FOR N=1 TO P
- 2360 PRINT TAB(18+8*N);M(N,12);
- 2370 NEXT N
- 2380 PRINT
- 2390 PRINT "NEW CASH TOTAL";
- 2400 FOR N=1 TO P
- 2410 PRINT TAB(18+8*N);M(N,1);
- 2420 NEXT N
- 2430 PRINT
- 2440 PRINT "NEW NET WORTH ";
- 2450 GOSUB 3400
- 2460 FOR N=1 TO P
- 2470 PRINT TAB(18+8*N);X(N);
- 2480 NEXT N
- 2490 IF Y=S THEN 2930
- 2500 REM
- 2510 REM
- 2520 REM CHECK IF ANYONE WANTS TO SELL OR BUY ANYTHING
- 2530 REM
- 2540 FOR N=1 TO P
- 2550 PRINT
- 2560 PRINT "*** PLAYER ";N;" ***"
- 2570 PRINT "YOU NOW HAVE $";M(N,1)
- 2580 FOR J=1 TO 10
- 2590 IF M(N,J+1)<>0 THEN 2620
- 2600 NEXT J
- 2610 GOTO 2730
- 2620 INPUT "WANT TO SELL"; R$
- 2630 IF R$="N" THEN 2730
- 2640 IF R$<>"Y" THEN 2760
- 2650 GOSUB 3080
- 2660 INPUT "NUMBER OF SHARES"; R
- 2670 IF R<=M(N,J+1) THEN 2700
- 2680 PRINT "*** YOU ONLY HAVE ";M(N,J+1);" SHARES ***"
- 2690 GOTO 2660
- 2700 M(N,J+1)=M(N,J+1)-R
- 2710 M(N,1)=M(N,1)+R*T(J)
- 2720 GOTO 2570
- 2730 FOR J=1 TO 10
- 2740 IF M(N,1)>T(J) THEN 2770
- 2750 NEXT J
- 2760 GOTO 2890
- 2770 INPUT "WANT TO BUY"; R$
- 2780 IF R$="N" THEN 2890
- 2790 IF R$<>"Y" THEN 2950
- 2800 GOSUB 3080
- 2810 INPUT "NUMBER OF SHARES"; R
- 2820 IF R*T(J)<=M(N,1) THEN 2850
- 2830 PRINT "ONLY MONEY ENOUGH FOR ";INT(M(N,1)/T(J));"SHARES"
- 2840 GOTO 2810
- 2850 M(N,J+1)=M(N,J+1)+R
- 2860 M(N,1)=M(N,1)-R*T(J)
- 2870 PRINT "YOU NOW HAVE $";M(N,1)
- 2880 GOTO 2730
- 2890 NEXT N
- 2900 GOTO 1580
- 2910 REM
- 2920 REM
- 2930 REM CLOSING OUT AT END OF GAME - PRINT FINAL TOTALS
- 2940 REM
- 2950 PRINT
- 2960 PRINT "*** FINAL TOTALS ARE:"
- 2970 PRINT "PLAYER TOTAL"
- 2980 FOR N=1 TO P
- 2990 FOR J=1 TO 10
- 3000 M(N,1)=M(N,1)+T(J)*M(N,J+1)
- 3010 NEXT J
- 3020 PRINT
- 3030 PRINT N,M(N,1)
- 3040 NEXT N
- 3050 GOTO 3480
- 3060 REM
- 3070 REM
- 3080 REM SUBROUTINE TO LOOK UP STOCK NAMES FOR BUY & SELL
- 3090 REM
- 3100 PRINT "NAME OF STOCK";
- 3110 INPUT R$
- 3120 FOR J=1 TO 10
- 3130 IF LEFT$(R$,2)=MID$(V$,3*J-2,2) THEN 3170
- 3140 IF LEFT$(R$,2)=MID$(V$,3*J-1,2) THEN 3170
- 3150 NEXT J
- 3160 GOTO 3100
- 3170 RETURN
- 3180 REM
- 3190 ON N GOTO 3200,3220,3240,3260,3280,3300,3320,3340,3360,3380
- 3200 S$=A$
- 3210 RETURN
- 3220 S$=B$
- 3230 RETURN
- 3240 S$=C$
- 3250 RETURN
- 3260 S$=D$
- 3270 RETURN
- 3280 S$=E$
- 3290 RETURN
- 3300 S$=F$
- 3310 RETURN
- 3320 S$=G$
- 3330 RETURN
- 3340 S$=H$
- 3350 RETURN
- 3360 S$=I$
- 3370 RETURN
- 3380 S$=J$
- 3390 RETURN
- 3400 FOR N=1 TO P
- 3410 W=0
- 3420 FOR J=1 TO 10
- 3430 W=W+T(J)*M(N,J+1)
- 3440 NEXT J
- 3450 X(N)=W+M(N,1)
- 3460 NEXT N
- 3470 RETURN
- 3480 RESET
-